# -*- coding: utf-8 -*-

###########################################################################
## Python code generated with wxFormBuilder (version Oct 26 2018)
## http://www.wxformbuilder.org/
##
## PLEASE DO *NOT* EDIT THIS FILE!
###########################################################################

import wx
import wx.xrc
import wx.dataview

###########################################################################
## Class MainView
###########################################################################

class MainView ( wx.Frame ):

	def __init__( self, parent ):
		wx.Frame.__init__ ( self, parent, id = wx.ID_ANY, title = u"Vision Mark", pos = wx.DefaultPosition, size = wx.Size( 900,600 ), style = wx.DEFAULT_FRAME_STYLE|wx.TAB_TRAVERSAL )

		self.SetSizeHints( wx.Size( 900,600 ), wx.DefaultSize )

		self.main_menu = wx.MenuBar( 0 )
		self.m_menu1 = wx.Menu()
		self.m_new_project = wx.MenuItem( self.m_menu1, wx.ID_ANY, u"新建项目", wx.EmptyString, wx.ITEM_NORMAL )
		self.m_menu1.Append( self.m_new_project )

		self.m_open_project = wx.MenuItem( self.m_menu1, wx.ID_ANY, u"打开项目", wx.EmptyString, wx.ITEM_NORMAL )
		self.m_menu1.Append( self.m_open_project )

		self.m_menu1.AppendSeparator()

		self.m_quit = wx.MenuItem( self.m_menu1, wx.ID_ANY, u"退出", wx.EmptyString, wx.ITEM_NORMAL )
		self.m_menu1.Append( self.m_quit )

		self.main_menu.Append( self.m_menu1, u"项目" )

		self.SetMenuBar( self.main_menu )

		bSizer2 = wx.BoxSizer( wx.HORIZONTAL )

		self.operate_area = wx.Notebook( self, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, 0 )

		bSizer2.Add( self.operate_area, 1, wx.EXPAND |wx.ALL, 5 )


		self.SetSizer( bSizer2 )
		self.Layout()

		self.Centre( wx.BOTH )

	def __del__( self ):
		pass


###########################################################################
## Class ProjectInfo
###########################################################################

class ProjectInfo ( wx.Panel ):

	def __init__( self, parent, id = wx.ID_ANY, pos = wx.DefaultPosition, size = wx.Size( 519,468 ), style = wx.TAB_TRAVERSAL, name = wx.EmptyString ):
		wx.Panel.__init__ ( self, parent, id = id, pos = pos, size = size, style = style, name = name )

		gbSizer1 = wx.GridBagSizer( 2, 2 )
		gbSizer1.SetFlexibleDirection( wx.BOTH )
		gbSizer1.SetNonFlexibleGrowMode( wx.FLEX_GROWMODE_SPECIFIED )

		self.m_staticText1 = wx.StaticText( self, wx.ID_ANY, u"项目名称", wx.DefaultPosition, wx.DefaultSize, 0 )
		self.m_staticText1.Wrap( -1 )

		gbSizer1.Add( self.m_staticText1, wx.GBPosition( 0, 0 ), wx.GBSpan( 1, 1 ), wx.ALL, 5 )

		self.project_name = wx.TextCtrl( self, wx.ID_ANY, wx.EmptyString, wx.DefaultPosition, wx.DefaultSize, 0 )
		gbSizer1.Add( self.project_name, wx.GBPosition( 0, 1 ), wx.GBSpan( 1, 2 ), wx.ALL|wx.EXPAND, 5 )

		self.m_staticText2 = wx.StaticText( self, wx.ID_ANY, u"项目位置", wx.DefaultPosition, wx.DefaultSize, 0 )
		self.m_staticText2.Wrap( -1 )

		gbSizer1.Add( self.m_staticText2, wx.GBPosition( 1, 0 ), wx.GBSpan( 1, 1 ), wx.ALL, 5 )

		bSizer3 = wx.BoxSizer( wx.HORIZONTAL )

		self.project_location = wx.TextCtrl( self, wx.ID_ANY, wx.EmptyString, wx.DefaultPosition, wx.DefaultSize, wx.TE_READONLY )
		bSizer3.Add( self.project_location, 1, wx.ALL, 5 )

		self.open_location = wx.Button( self, wx.ID_ANY, u"...", wx.DefaultPosition, wx.DefaultSize, wx.BU_EXACTFIT )
		bSizer3.Add( self.open_location, 0, wx.ALL, 5 )


		gbSizer1.Add( bSizer3, wx.GBPosition( 1, 1 ), wx.GBSpan( 1, 3 ), wx.EXPAND, 5 )

		self.m_staticText3 = wx.StaticText( self, wx.ID_ANY, u"特征序列文件名称", wx.DefaultPosition, wx.DefaultSize, 0 )
		self.m_staticText3.Wrap( -1 )

		gbSizer1.Add( self.m_staticText3, wx.GBPosition( 2, 0 ), wx.GBSpan( 1, 1 ), wx.ALL, 5 )

		self.export_category = wx.TextCtrl( self, wx.ID_ANY, u"categories", wx.DefaultPosition, wx.DefaultSize, 0 )
		gbSizer1.Add( self.export_category, wx.GBPosition( 2, 1 ), wx.GBSpan( 1, 1 ), wx.ALL|wx.EXPAND, 5 )

		self.m_staticText111 = wx.StaticText( self, wx.ID_ANY, u".csv", wx.DefaultPosition, wx.DefaultSize, 0 )
		self.m_staticText111.Wrap( -1 )

		gbSizer1.Add( self.m_staticText111, wx.GBPosition( 2, 2 ), wx.GBSpan( 1, 1 ), wx.ALL, 5 )

		self.m_staticText22 = wx.StaticText( self, wx.ID_ANY, u"样本描述文件名称", wx.DefaultPosition, wx.DefaultSize, 0 )
		self.m_staticText22.Wrap( -1 )

		gbSizer1.Add( self.m_staticText22, wx.GBPosition( 3, 0 ), wx.GBSpan( 1, 1 ), wx.ALL, 5 )

		self.export_sample = wx.TextCtrl( self, wx.ID_ANY, u"samples", wx.DefaultPosition, wx.DefaultSize, 0 )
		gbSizer1.Add( self.export_sample, wx.GBPosition( 3, 1 ), wx.GBSpan( 1, 1 ), wx.ALL|wx.EXPAND, 5 )

		self.m_staticText23 = wx.StaticText( self, wx.ID_ANY, u".csv", wx.DefaultPosition, wx.DefaultSize, 0 )
		self.m_staticText23.Wrap( -1 )

		gbSizer1.Add( self.m_staticText23, wx.GBPosition( 3, 2 ), wx.GBSpan( 1, 1 ), wx.ALL, 5 )

		self.m_staticText221 = wx.StaticText( self, wx.ID_ANY, u"验证描述文件名称", wx.DefaultPosition, wx.DefaultSize, 0 )
		self.m_staticText221.Wrap( -1 )

		gbSizer1.Add( self.m_staticText221, wx.GBPosition( 4, 0 ), wx.GBSpan( 1, 1 ), wx.ALL, 5 )

		self.export_validate = wx.TextCtrl( self, wx.ID_ANY, u"validates", wx.DefaultPosition, wx.DefaultSize, 0 )
		gbSizer1.Add( self.export_validate, wx.GBPosition( 4, 1 ), wx.GBSpan( 1, 1 ), wx.ALL|wx.EXPAND, 5 )

		self.m_staticText231 = wx.StaticText( self, wx.ID_ANY, u".csv", wx.DefaultPosition, wx.DefaultSize, 0 )
		self.m_staticText231.Wrap( -1 )

		gbSizer1.Add( self.m_staticText231, wx.GBPosition( 4, 2 ), wx.GBSpan( 1, 1 ), wx.ALL, 5 )

		self.m_staticText25 = wx.StaticText( self, wx.ID_ANY, u"样本图像格式", wx.DefaultPosition, wx.DefaultSize, 0 )
		self.m_staticText25.Wrap( -1 )

		gbSizer1.Add( self.m_staticText25, wx.GBPosition( 5, 0 ), wx.GBSpan( 1, 1 ), wx.ALL, 5 )

		sample_typeChoices = [ u"PNG", u"JPEG" ]
		self.sample_type = wx.Choice( self, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, sample_typeChoices, 0 )
		self.sample_type.SetSelection( 0 )
		gbSizer1.Add( self.sample_type, wx.GBPosition( 5, 1 ), wx.GBSpan( 1, 1 ), wx.ALL|wx.EXPAND, 5 )

		self.m_staticText24 = wx.StaticText( self, wx.ID_ANY, u"选择模版网络设置", wx.DefaultPosition, wx.DefaultSize, 0 )
		self.m_staticText24.Wrap( -1 )

		gbSizer1.Add( self.m_staticText24, wx.GBPosition( 6, 0 ), wx.GBSpan( 1, 1 ), wx.ALL, 5 )

		nn_presetsChoices = []
		self.nn_presets = wx.Choice( self, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, nn_presetsChoices, 0 )
		self.nn_presets.SetSelection( 0 )
		gbSizer1.Add( self.nn_presets, wx.GBPosition( 6, 1 ), wx.GBSpan( 1, 1 ), wx.ALL|wx.EXPAND, 5 )

		self.m_staticText4 = wx.StaticText( self, wx.ID_ANY, u"样本图像长边尺寸", wx.DefaultPosition, wx.DefaultSize, 0 )
		self.m_staticText4.Wrap( -1 )

		gbSizer1.Add( self.m_staticText4, wx.GBPosition( 7, 0 ), wx.GBSpan( 1, 1 ), wx.ALL, 5 )

		self.sample_long_side = wx.TextCtrl( self, wx.ID_ANY, u"512", wx.DefaultPosition, wx.DefaultSize, 0 )
		gbSizer1.Add( self.sample_long_side, wx.GBPosition( 7, 1 ), wx.GBSpan( 1, 1 ), wx.ALL|wx.EXPAND, 5 )

		self.m_staticText8 = wx.StaticText( self, wx.ID_ANY, u"像素", wx.DefaultPosition, wx.DefaultSize, 0 )
		self.m_staticText8.Wrap( -1 )

		gbSizer1.Add( self.m_staticText8, wx.GBPosition( 7, 2 ), wx.GBSpan( 1, 1 ), wx.ALL, 5 )

		self.m_staticText12 = wx.StaticText( self, wx.ID_ANY, u"训练样本组数", wx.DefaultPosition, wx.DefaultSize, 0 )
		self.m_staticText12.Wrap( -1 )

		gbSizer1.Add( self.m_staticText12, wx.GBPosition( 8, 0 ), wx.GBSpan( 1, 1 ), wx.ALL, 5 )

		self.training_groups = wx.TextCtrl( self, wx.ID_ANY, u"1", wx.DefaultPosition, wx.DefaultSize, 0 )
		gbSizer1.Add( self.training_groups, wx.GBPosition( 8, 1 ), wx.GBSpan( 1, 1 ), wx.ALL|wx.EXPAND, 5 )

		self.m_staticText13 = wx.StaticText( self, wx.ID_ANY, u"组", wx.DefaultPosition, wx.DefaultSize, 0 )
		self.m_staticText13.Wrap( -1 )

		gbSizer1.Add( self.m_staticText13, wx.GBPosition( 8, 2 ), wx.GBSpan( 1, 1 ), wx.ALL, 5 )

		self.m_staticText5 = wx.StaticText( self, wx.ID_ANY, u"训练样本比例", wx.DefaultPosition, wx.DefaultSize, 0 )
		self.m_staticText5.Wrap( -1 )

		gbSizer1.Add( self.m_staticText5, wx.GBPosition( 9, 0 ), wx.GBSpan( 1, 1 ), wx.ALL, 5 )

		self.training_rate = wx.TextCtrl( self, wx.ID_ANY, u"80", wx.DefaultPosition, wx.DefaultSize, 0 )
		gbSizer1.Add( self.training_rate, wx.GBPosition( 9, 1 ), wx.GBSpan( 1, 1 ), wx.ALL|wx.EXPAND, 5 )

		self.m_staticText10 = wx.StaticText( self, wx.ID_ANY, u"%", wx.DefaultPosition, wx.DefaultSize, 0 )
		self.m_staticText10.Wrap( -1 )

		gbSizer1.Add( self.m_staticText10, wx.GBPosition( 9, 2 ), wx.GBSpan( 1, 1 ), wx.ALL, 5 )

		self.m_staticText6 = wx.StaticText( self, wx.ID_ANY, u"验证样本比例", wx.DefaultPosition, wx.DefaultSize, 0 )
		self.m_staticText6.Wrap( -1 )

		gbSizer1.Add( self.m_staticText6, wx.GBPosition( 10, 0 ), wx.GBSpan( 1, 1 ), wx.ALL, 5 )

		self.validation_rate = wx.TextCtrl( self, wx.ID_ANY, u"20", wx.DefaultPosition, wx.DefaultSize, 0 )
		gbSizer1.Add( self.validation_rate, wx.GBPosition( 10, 1 ), wx.GBSpan( 1, 1 ), wx.ALL|wx.EXPAND, 5 )

		self.m_staticText11 = wx.StaticText( self, wx.ID_ANY, u"%", wx.DefaultPosition, wx.DefaultSize, 0 )
		self.m_staticText11.Wrap( -1 )

		gbSizer1.Add( self.m_staticText11, wx.GBPosition( 10, 2 ), wx.GBSpan( 1, 1 ), wx.ALL, 5 )

		self.save_project = wx.Button( self, wx.ID_ANY, u"保存项目信息", wx.DefaultPosition, wx.DefaultSize, 0 )
		gbSizer1.Add( self.save_project, wx.GBPosition( 11, 1 ), wx.GBSpan( 1, 1 ), wx.ALL, 5 )

		self.upgrade_project = wx.Button( self, wx.ID_ANY, u"升级项目数据", wx.DefaultPosition, wx.DefaultSize, 0 )
		gbSizer1.Add( self.upgrade_project, wx.GBPosition( 11, 0 ), wx.GBSpan( 1, 1 ), wx.ALL, 5 )


		gbSizer1.AddGrowableCol( 3 )

		self.SetSizer( gbSizer1 )
		self.Layout()

	def __del__( self ):
		pass


###########################################################################
## Class SampleSource
###########################################################################

class SampleSource ( wx.Panel ):

	def __init__( self, parent, id = wx.ID_ANY, pos = wx.DefaultPosition, size = wx.Size( 618,300 ), style = wx.TAB_TRAVERSAL, name = wx.EmptyString ):
		wx.Panel.__init__ ( self, parent, id = id, pos = pos, size = size, style = style, name = name )

		bSizer12 = wx.BoxSizer( wx.HORIZONTAL )

		self.dir_list = wx.GenericDirCtrl( self, wx.ID_ANY, wx.EmptyString, wx.DefaultPosition, wx.DefaultSize, wx.DIRCTRL_3D_INTERNAL|wx.DIRCTRL_DIR_ONLY|wx.SUNKEN_BORDER, wx.EmptyString, 0 )

		self.dir_list.ShowHidden( False )
		bSizer12.Add( self.dir_list, 1, wx.EXPAND |wx.ALL, 5 )

		gbSizer5 = wx.GridBagSizer( 3, 5 )
		gbSizer5.SetFlexibleDirection( wx.BOTH )
		gbSizer5.SetNonFlexibleGrowMode( wx.FLEX_GROWMODE_SPECIFIED )

		bSizer25 = wx.BoxSizer( wx.HORIZONTAL )

		self.semiauto_mode = wx.CheckBox( self, wx.ID_ANY, u"自动切换", wx.DefaultPosition, wx.DefaultSize, 0 )
		bSizer25.Add( self.semiauto_mode, 0, wx.ALIGN_CENTER_VERTICAL|wx.ALL, 5 )


		bSizer25.Add( ( 0, 0), 1, wx.EXPAND, 5 )

		self.to_prev = wx.Button( self, wx.ID_ANY, u"↑", wx.DefaultPosition, wx.DefaultSize, wx.BU_EXACTFIT )
		bSizer25.Add( self.to_prev, 0, wx.BOTTOM|wx.LEFT|wx.TOP, 5 )

		self.to_next = wx.Button( self, wx.ID_ANY, u"↓", wx.DefaultPosition, wx.DefaultSize, wx.BU_EXACTFIT )
		bSizer25.Add( self.to_next, 0, wx.BOTTOM|wx.RIGHT|wx.TOP, 5 )


		gbSizer5.Add( bSizer25, wx.GBPosition( 0, 0 ), wx.GBSpan( 1, 2 ), wx.EXPAND, 5 )

		file_listChoices = []
		self.file_list = wx.ListBox( self, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, file_listChoices, wx.LB_SINGLE )
		gbSizer5.Add( self.file_list, wx.GBPosition( 1, 0 ), wx.GBSpan( 2, 2 ), wx.ALL|wx.EXPAND, 5 )


		gbSizer5.AddGrowableCol( 1 )
		gbSizer5.AddGrowableRow( 1 )

		bSizer12.Add( gbSizer5, 1, wx.EXPAND, 5 )

		gbSizer2 = wx.GridBagSizer( 3, 5 )
		gbSizer2.SetFlexibleDirection( wx.BOTH )
		gbSizer2.SetNonFlexibleGrowMode( wx.FLEX_GROWMODE_SPECIFIED )

		self.add_sample = wx.Button( self, wx.ID_ANY, u"加入样本集", wx.DefaultPosition, wx.DefaultSize, 0 )
		self.add_sample.Enable( False )

		gbSizer2.Add( self.add_sample, wx.GBPosition( 0, 0 ), wx.GBSpan( 1, 1 ), wx.ALL, 5 )

		self.remove_sample = wx.Button( self, wx.ID_ANY, u"移出样本集", wx.DefaultPosition, wx.DefaultSize, 0 )
		self.remove_sample.Enable( False )

		gbSizer2.Add( self.remove_sample, wx.GBPosition( 0, 1 ), wx.GBSpan( 1, 1 ), wx.ALL, 5 )

		self.add_all = wx.Button( self, wx.ID_ANY, u"添加本目录全部", wx.DefaultPosition, wx.DefaultSize, 0 )
		gbSizer2.Add( self.add_all, wx.GBPosition( 0, 2 ), wx.GBSpan( 1, 1 ), wx.ALL, 5 )

		self.remove_all = wx.Button( self, wx.ID_ANY, u"移除本目录全部", wx.DefaultPosition, wx.DefaultSize, 0 )
		gbSizer2.Add( self.remove_all, wx.GBPosition( 0, 3 ), wx.GBSpan( 1, 1 ), wx.ALL, 5 )


		bSizer12.Add( gbSizer2, 2, wx.EXPAND, 5 )


		self.SetSizer( bSizer12 )
		self.Layout()

	def __del__( self ):
		pass


###########################################################################
## Class SampleEdit
###########################################################################

class SampleEdit ( wx.Panel ):

	def __init__( self, parent, id = wx.ID_ANY, pos = wx.DefaultPosition, size = wx.Size( 648,410 ), style = wx.TAB_TRAVERSAL, name = wx.EmptyString ):
		wx.Panel.__init__ ( self, parent, id = id, pos = pos, size = size, style = style, name = name )

		bSizer19 = wx.BoxSizer( wx.HORIZONTAL )

		bSizer20 = wx.BoxSizer( wx.VERTICAL )

		self.source_list = wx.TreeCtrl( self, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, wx.TR_DEFAULT_STYLE|wx.BORDER_SUNKEN )
		bSizer20.Add( self.source_list, 1, wx.ALL|wx.EXPAND, 5 )

		bSizer21 = wx.BoxSizer( wx.HORIZONTAL )

		self.top_slice = wx.Button( self, wx.ID_ANY, u"|<", wx.DefaultPosition, wx.DefaultSize, wx.BU_EXACTFIT )
		bSizer21.Add( self.top_slice, 0, wx.BOTTOM|wx.TOP, 5 )

		self.prev_slice = wx.Button( self, wx.ID_ANY, u"<<", wx.DefaultPosition, wx.DefaultSize, wx.BU_EXACTFIT )
		bSizer21.Add( self.prev_slice, 0, wx.BOTTOM|wx.TOP, 5 )


		bSizer21.Add( ( 0, 0), 1, wx.EXPAND, 5 )

		self.slice_summary = wx.StaticText( self, wx.ID_ANY, u"共1页", wx.DefaultPosition, wx.DefaultSize, 0 )
		self.slice_summary.Wrap( -1 )

		bSizer21.Add( self.slice_summary, 0, wx.ALIGN_CENTER_VERTICAL|wx.ALL|wx.EXPAND, 5 )


		bSizer21.Add( ( 0, 0), 1, wx.EXPAND, 5 )

		self.next_slice = wx.Button( self, wx.ID_ANY, u">>", wx.DefaultPosition, wx.DefaultSize, wx.BU_EXACTFIT )
		bSizer21.Add( self.next_slice, 0, wx.BOTTOM|wx.TOP, 5 )

		self.tail_slice = wx.Button( self, wx.ID_ANY, u">|", wx.DefaultPosition, wx.DefaultSize, wx.BU_EXACTFIT )
		bSizer21.Add( self.tail_slice, 0, wx.BOTTOM|wx.TOP, 5 )


		bSizer20.Add( bSizer21, 0, wx.EXPAND, 5 )

		bSizer26 = wx.BoxSizer( wx.HORIZONTAL )

		self.slice_page = wx.SpinCtrl( self, wx.ID_ANY, u"1", wx.DefaultPosition, wx.DefaultSize, wx.SP_ARROW_KEYS, 1, 10, 0 )
		bSizer26.Add( self.slice_page, 1, wx.ALL, 5 )

		self.m_staticText16 = wx.StaticText( self, wx.ID_ANY, u"页", wx.DefaultPosition, wx.DefaultSize, 0 )
		self.m_staticText16.Wrap( -1 )

		bSizer26.Add( self.m_staticText16, 0, wx.ALIGN_CENTER_VERTICAL|wx.ALL, 5 )

		self.page_jump = wx.Button( self, wx.ID_ANY, u">", wx.DefaultPosition, wx.DefaultSize, wx.BU_EXACTFIT )
		bSizer26.Add( self.page_jump, 0, wx.ALL, 5 )


		bSizer20.Add( bSizer26, 0, wx.EXPAND, 5 )


		bSizer19.Add( bSizer20, 1, wx.EXPAND, 5 )

		bSizer22 = wx.BoxSizer( wx.VERTICAL )

		mark_listChoices = []
		self.mark_list = wx.CheckListBox( self, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, mark_listChoices, 0 )
		bSizer22.Add( self.mark_list, 1, wx.ALL|wx.EXPAND, 5 )

		self.mark = wx.TextCtrl( self, wx.ID_ANY, wx.EmptyString, wx.DefaultPosition, wx.DefaultSize, wx.TE_PROCESS_ENTER )
		bSizer22.Add( self.mark, 0, wx.ALL|wx.EXPAND, 5 )


		bSizer19.Add( bSizer22, 1, wx.EXPAND, 5 )

		gbSizer3 = wx.GridBagSizer( 0, 0 )
		gbSizer3.SetFlexibleDirection( wx.BOTH )
		gbSizer3.SetNonFlexibleGrowMode( wx.FLEX_GROWMODE_SPECIFIED )

		self.persist_sample = wx.Button( self, wx.ID_ANY, u"保存样本及标记", wx.DefaultPosition, wx.DefaultSize, 0 )
		gbSizer3.Add( self.persist_sample, wx.GBPosition( 0, 0 ), wx.GBSpan( 1, 1 ), wx.ALL, 5 )

		self.remove_sample = wx.Button( self, wx.ID_ANY, u"删除样本", wx.DefaultPosition, wx.DefaultSize, 0 )
		gbSizer3.Add( self.remove_sample, wx.GBPosition( 0, 1 ), wx.GBSpan( 1, 1 ), wx.ALL, 5 )

		self.sample_all = wx.Button( self, wx.ID_ANY, u"选择全图", wx.DefaultPosition, wx.DefaultSize, 0 )
		gbSizer3.Add( self.sample_all, wx.GBPosition( 0, 2 ), wx.GBSpan( 1, 1 ), wx.ALL, 5 )


		bSizer19.Add( gbSizer3, 2, wx.EXPAND, 5 )


		self.SetSizer( bSizer19 )
		self.Layout()

	def __del__( self ):
		pass


###########################################################################
## Class SampleView
###########################################################################

class SampleView ( wx.Panel ):

	def __init__( self, parent, id = wx.ID_ANY, pos = wx.DefaultPosition, size = wx.Size( 622,422 ), style = wx.TAB_TRAVERSAL, name = wx.EmptyString ):
		wx.Panel.__init__ ( self, parent, id = id, pos = pos, size = size, style = style, name = name )

		bSizer27 = wx.BoxSizer( wx.HORIZONTAL )

		bSizer28 = wx.BoxSizer( wx.VERTICAL )

		sample_listChoices = []
		self.sample_list = wx.ListBox( self, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, sample_listChoices, 0 )
		bSizer28.Add( self.sample_list, 1, wx.ALL|wx.EXPAND, 5 )

		bSizer21 = wx.BoxSizer( wx.HORIZONTAL )

		self.top_slice = wx.Button( self, wx.ID_ANY, u"|<", wx.DefaultPosition, wx.DefaultSize, wx.BU_EXACTFIT )
		bSizer21.Add( self.top_slice, 0, wx.BOTTOM|wx.TOP, 5 )

		self.prev_slice = wx.Button( self, wx.ID_ANY, u"<<", wx.DefaultPosition, wx.DefaultSize, wx.BU_EXACTFIT )
		bSizer21.Add( self.prev_slice, 0, wx.BOTTOM|wx.TOP, 5 )


		bSizer21.Add( ( 0, 0), 1, wx.EXPAND, 5 )

		self.slice_summary = wx.StaticText( self, wx.ID_ANY, u"共1页", wx.DefaultPosition, wx.DefaultSize, 0 )
		self.slice_summary.Wrap( -1 )

		bSizer21.Add( self.slice_summary, 0, wx.ALIGN_CENTER_VERTICAL|wx.ALL|wx.EXPAND, 5 )


		bSizer21.Add( ( 0, 0), 1, wx.EXPAND, 5 )

		self.next_slice = wx.Button( self, wx.ID_ANY, u">>", wx.DefaultPosition, wx.DefaultSize, wx.BU_EXACTFIT )
		bSizer21.Add( self.next_slice, 0, wx.BOTTOM|wx.TOP, 5 )

		self.tail_slice = wx.Button( self, wx.ID_ANY, u">|", wx.DefaultPosition, wx.DefaultSize, wx.BU_EXACTFIT )
		bSizer21.Add( self.tail_slice, 0, wx.BOTTOM|wx.TOP, 5 )


		bSizer28.Add( bSizer21, 0, wx.EXPAND, 5 )

		bSizer26 = wx.BoxSizer( wx.HORIZONTAL )

		self.slice_page = wx.SpinCtrl( self, wx.ID_ANY, u"1", wx.DefaultPosition, wx.DefaultSize, wx.SP_ARROW_KEYS, 1, 10, 0 )
		bSizer26.Add( self.slice_page, 1, wx.ALL, 5 )

		self.m_staticText16 = wx.StaticText( self, wx.ID_ANY, u"页", wx.DefaultPosition, wx.DefaultSize, 0 )
		self.m_staticText16.Wrap( -1 )

		bSizer26.Add( self.m_staticText16, 0, wx.ALIGN_CENTER_VERTICAL|wx.ALL, 5 )

		self.page_jump = wx.Button( self, wx.ID_ANY, u">", wx.DefaultPosition, wx.DefaultSize, wx.BU_EXACTFIT )
		bSizer26.Add( self.page_jump, 0, wx.ALL, 5 )


		bSizer28.Add( bSizer26, 0, wx.EXPAND, 5 )


		bSizer27.Add( bSizer28, 1, wx.EXPAND, 5 )

		gbSizer4 = wx.GridBagSizer( 5, 5 )
		gbSizer4.SetFlexibleDirection( wx.BOTH )
		gbSizer4.SetNonFlexibleGrowMode( wx.FLEX_GROWMODE_SPECIFIED )

		mark_listChoices = []
		self.mark_list = wx.CheckListBox( self, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, mark_listChoices, 0 )
		self.mark_list.SetMinSize( wx.Size( 150,-1 ) )

		gbSizer4.Add( self.mark_list, wx.GBPosition( 0, 0 ), wx.GBSpan( 1, 1 ), wx.ALL|wx.EXPAND, 5 )


		gbSizer4.AddGrowableRow( 0 )

		bSizer27.Add( gbSizer4, 3, wx.EXPAND, 5 )


		self.SetSizer( bSizer27 )
		self.Layout()

	def __del__( self ):
		pass


###########################################################################
## Class StatPanel
###########################################################################

class StatPanel ( wx.Panel ):

	def __init__( self, parent, id = wx.ID_ANY, pos = wx.DefaultPosition, size = wx.Size( 500,300 ), style = wx.TAB_TRAVERSAL, name = wx.EmptyString ):
		wx.Panel.__init__ ( self, parent, id = id, pos = pos, size = size, style = style, name = name )

		bSizer35 = wx.BoxSizer( wx.HORIZONTAL )

		bSizer36 = wx.BoxSizer( wx.VERTICAL )

		sbSizer7 = wx.StaticBoxSizer( wx.StaticBox( self, wx.ID_ANY, u"项目统计" ), wx.VERTICAL )

		self.stat_list = wx.dataview.TreeListCtrl( sbSizer7.GetStaticBox(), wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, wx.dataview.TL_DEFAULT_STYLE )
		self.stat_list.AppendColumn( u"项目", wx.COL_WIDTH_AUTOSIZE, wx.ALIGN_LEFT, wx.COL_RESIZABLE )
		self.stat_list.AppendColumn( u"明细", wx.COL_WIDTH_AUTOSIZE, wx.ALIGN_LEFT, wx.COL_RESIZABLE )
		self.stat_list.AppendColumn( u"参考备注", wx.COL_WIDTH_AUTOSIZE, wx.ALIGN_LEFT, wx.COL_RESIZABLE )

		sbSizer7.Add( self.stat_list, 1, wx.EXPAND |wx.ALL, 5 )


		bSizer36.Add( sbSizer7, 2, wx.EXPAND, 5 )


		bSizer35.Add( bSizer36, 2, wx.EXPAND, 5 )


		self.SetSizer( bSizer35 )
		self.Layout()

	def __del__( self ):
		pass


###########################################################################
## Class BlankMessage
###########################################################################

class BlankMessage ( wx.Dialog ):

	def __init__( self, parent ):
		wx.Dialog.__init__ ( self, parent, id = wx.ID_ANY, title = wx.EmptyString, pos = wx.DefaultPosition, size = wx.Size( 369,87 ), style = wx.DEFAULT_DIALOG_STYLE|wx.STAY_ON_TOP )

		self.SetSizeHints( wx.DefaultSize, wx.DefaultSize )

		bSizer17 = wx.BoxSizer( wx.HORIZONTAL )

		self.prompt_text = wx.StaticText( self, wx.ID_ANY, u"MyLabel", wx.DefaultPosition, wx.DefaultSize, 0 )
		self.prompt_text.Wrap( -1 )

		bSizer17.Add( self.prompt_text, 1, wx.ALIGN_CENTER_VERTICAL|wx.ALL, 15 )


		self.SetSizer( bSizer17 )
		self.Layout()

		self.Centre( wx.BOTH )

	def __del__( self ):
		pass


###########################################################################
## Class CategoryEdit
###########################################################################

class CategoryEdit ( wx.Panel ):

	def __init__( self, parent, id = wx.ID_ANY, pos = wx.DefaultPosition, size = wx.Size( 500,300 ), style = wx.TAB_TRAVERSAL, name = wx.EmptyString ):
		wx.Panel.__init__ ( self, parent, id = id, pos = pos, size = size, style = style, name = name )

		bSizer17 = wx.BoxSizer( wx.HORIZONTAL )

		mark_listChoices = []
		self.mark_list = wx.ListBox( self, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, mark_listChoices, 0 )
		bSizer17.Add( self.mark_list, 1, wx.ALL|wx.EXPAND, 5 )

		sbSizer5 = wx.StaticBoxSizer( wx.StaticBox( self, wx.ID_ANY, u"可用操作" ), wx.VERTICAL )

		bSizer21 = wx.BoxSizer( wx.HORIZONTAL )

		self.add_mark = wx.RadioButton( sbSizer5.GetStaticBox(), wx.ID_ANY, u"添加", wx.DefaultPosition, wx.DefaultSize, wx.RB_GROUP )
		bSizer21.Add( self.add_mark, 0, wx.ALL, 5 )

		self.add_mark_name = wx.TextCtrl( sbSizer5.GetStaticBox(), wx.ID_ANY, wx.EmptyString, wx.DefaultPosition, wx.DefaultSize, 0 )
		bSizer21.Add( self.add_mark_name, 1, wx.ALL, 5 )


		sbSizer5.Add( bSizer21, 0, wx.EXPAND, 5 )

		bSizer19 = wx.BoxSizer( wx.HORIZONTAL )

		self.rename_mark = wx.RadioButton( sbSizer5.GetStaticBox(), wx.ID_ANY, u"改名", wx.DefaultPosition, wx.DefaultSize, 0 )
		bSizer19.Add( self.rename_mark, 0, wx.ALL, 5 )

		self.new_mark_name = wx.TextCtrl( sbSizer5.GetStaticBox(), wx.ID_ANY, wx.EmptyString, wx.DefaultPosition, wx.DefaultSize, 0 )
		bSizer19.Add( self.new_mark_name, 1, wx.ALL, 5 )


		sbSizer5.Add( bSizer19, 0, wx.EXPAND, 5 )

		bSizer18 = wx.BoxSizer( wx.VERTICAL )

		self.delete_mark = wx.RadioButton( sbSizer5.GetStaticBox(), wx.ID_ANY, u"删除", wx.DefaultPosition, wx.DefaultSize, 0 )
		bSizer18.Add( self.delete_mark, 1, wx.ALL, 5 )


		sbSizer5.Add( bSizer18, 0, wx.EXPAND, 5 )

		bSizer20 = wx.BoxSizer( wx.HORIZONTAL )

		self.execute_operation = wx.Button( sbSizer5.GetStaticBox(), wx.ID_ANY, u"执行操作", wx.DefaultPosition, wx.DefaultSize, 0 )
		bSizer20.Add( self.execute_operation, 0, wx.ALL, 5 )


		sbSizer5.Add( bSizer20, 0, wx.EXPAND, 5 )


		bSizer17.Add( sbSizer5, 2, wx.EXPAND, 5 )


		self.SetSizer( bSizer17 )
		self.Layout()

	def __del__( self ):
		pass


###########################################################################
## Class SampleExport
###########################################################################

class SampleExport ( wx.Panel ):

	def __init__( self, parent, id = wx.ID_ANY, pos = wx.DefaultPosition, size = wx.Size( 771,487 ), style = wx.TAB_TRAVERSAL, name = wx.EmptyString ):
		wx.Panel.__init__ ( self, parent, id = id, pos = pos, size = size, style = style, name = name )

		bSizer21 = wx.BoxSizer( wx.HORIZONTAL )

		sbSizer4 = wx.StaticBoxSizer( wx.StaticBox( self, wx.ID_ANY, u"特征标记选择" ), wx.VERTICAL )

		marker_listChoices = []
		self.marker_list = wx.CheckListBox( sbSizer4.GetStaticBox(), wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, marker_listChoices, 0 )
		sbSizer4.Add( self.marker_list, 1, wx.ALL|wx.EXPAND, 5 )


		bSizer21.Add( sbSizer4, 1, wx.EXPAND, 5 )

		bSizer22 = wx.BoxSizer( wx.VERTICAL )

		sbSizer5 = wx.StaticBoxSizer( wx.StaticBox( self, wx.ID_ANY, u"样本导出配置" ), wx.VERTICAL )

		self.use_csv_group = wx.RadioButton( sbSizer5.GetStaticBox(), wx.ID_ANY, u"使用CSV文件描述样本及分组", wx.DefaultPosition, wx.DefaultSize, wx.RB_GROUP )
		self.use_csv_group.SetValue( True )
		sbSizer5.Add( self.use_csv_group, 0, wx.ALL, 5 )

		self.use_directory_group = wx.RadioButton( sbSizer5.GetStaticBox(), wx.ID_ANY, u"使用文件目录描述样本及分组", wx.DefaultPosition, wx.DefaultSize, 0 )
		sbSizer5.Add( self.use_directory_group, 0, wx.ALL, 5 )

		self.pad_sample = wx.CheckBox( sbSizer5.GetStaticBox(), wx.ID_ANY, u"将样本图片填充为正方形", wx.DefaultPosition, wx.DefaultSize, 0 )
		sbSizer5.Add( self.pad_sample, 0, wx.ALL, 5 )

		self.resize_sample = wx.CheckBox( sbSizer5.GetStaticBox(), wx.ID_ANY, u"将样本图片等比缩放到指定尺寸", wx.DefaultPosition, wx.DefaultSize, 0 )
		sbSizer5.Add( self.resize_sample, 0, wx.ALL, 5 )


		bSizer22.Add( sbSizer5, 4, wx.EXPAND, 5 )

		sbSizer7 = wx.StaticBoxSizer( wx.StaticBox( self, wx.ID_ANY, u"样本导出" ), wx.VERTICAL )

		bSizer27 = wx.BoxSizer( wx.HORIZONTAL )

		self.start_export = wx.Button( sbSizer7.GetStaticBox(), wx.ID_ANY, u"开始导出", wx.DefaultPosition, wx.DefaultSize, 0 )
		bSizer27.Add( self.start_export, 0, wx.ALL, 5 )


		sbSizer7.Add( bSizer27, 0, wx.EXPAND, 5 )

		self.export_progress = wx.Gauge( sbSizer7.GetStaticBox(), wx.ID_ANY, 100, wx.DefaultPosition, wx.DefaultSize, wx.GA_HORIZONTAL )
		self.export_progress.SetValue( 0 )
		sbSizer7.Add( self.export_progress, 0, wx.ALL|wx.EXPAND, 5 )


		bSizer22.Add( sbSizer7, 1, wx.EXPAND, 5 )


		bSizer21.Add( bSizer22, 2, wx.EXPAND, 0 )


		self.SetSizer( bSizer21 )
		self.Layout()

	def __del__( self ):
		pass


